package com.backstage.dao;

import com.backstage.entity.Menu;
import com.backstage.entity.Role;
import com.backstage.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * @Project authority
 * @Package com.backstage.dao
 * @Data 2017/7/11下午 3:56.
 * @Aurhor 阮雪峰
 */
public interface UserDao extends BaseDao<User>{

    /**
     * 查询登录用户信息
     * @param user
     * @return
     */
    User queryByLogin(User user);

    /**
     * 查询用户权限标识
     * @param user
     * @return
     */
    List<String> queryUserStringPermission(User user);

    /**
     * 查询菜单
     * @param loginUser
     * @return
     */
    List<Menu> getLoginUserMenuPower(User loginUser);

    /**
     * 查询列表权限
     * @param loginUser
     * @return
     */
    List<Menu> getLoginUserMainPower(User loginUser);

    /**
     * 修改密码
     * @param loginUser
     */
    void updatePassword(User loginUser);

    /**
     * 关联角色
     * @param user
     */
    void relateRoles(@Param("user") User user);

    /**
     * 删除用户角色关联
     * @param user
     */
    void deleteRelateRoles(User user);

    /**
     * 批量删除用户角色关联
     * @param users
     */
    void deleteRelateRolesBach(@Param("users") ArrayList<User> users);

    /**
     * 修改用户状态
     * @param user
     */
    void updateStatus(User user);

    /**
     * 用户是否存在
     * @param user
     * @return
     */
    int isExistUserName(User user);

    /**
     * 查询所有角色
     * @return
     */
    List<Role> getAllRoles();
}
